home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / tcp / AmIRCii_2_8_2.lha / AmIRCii-2.8.2 / doc / HISTORY < prev    next >
Text File  |  1994-10-14  |  60KB  |  1,677 lines

  1. 2.2.9
  2.     fixed memory leak
  3.  
  4. 2.2.7
  5.     DCC SEND/GET now shows the size, if it exists.
  6.  
  7.     You can now use \ to escape newlines in scripts.
  8.  
  9. 2.2.5
  10.     New key binding, SCROLL_START, which moves the scroll
  11.     buffer to the start of the lastlog buffer.  Bound to
  12.     meta1-< by default.
  13.  
  14.     New arguemnt to /LASTLOG, -LITERAL, which allows you
  15.     to specify the next argument as the pattern to match.
  16.     Allows matching of numbers, eg
  17.         /LASTLOG -LITERNAL 6667
  18.  
  19.     Channel keys, if set, are now shown in STATUS_MODE.
  20.  
  21.     When DCC connections become connected, the remote IP number
  22.     is shown, for additional security.
  23.  
  24. 2.2.3
  25.     I think the Makefile and config.h file are easier to use
  26.     now.
  27.  
  28.     The control characters for bold, inverse and underline
  29.     have been changed to ^B ^V and ^_ respectively, so make
  30.     some sort of visual connection (B to bold, _ to underline)
  31.     with these characters.
  32.  
  33. 2.2.2
  34.     New command, XTYPE.  Happens like this;
  35.         XTYPE [-LITERAL] <text>
  36.  
  37.     This text gets added to the input cursor, like /type does,
  38.     except bindings are ignored with the -LITERAL switch is
  39.     used.
  40.  
  41.     New function $CURPOS() which returns the postition from the
  42.     start of the input line to where the cursor is now.
  43.  
  44.     New STATUS_FORMAT variable, %> which makes anything beyond 
  45.     it right justified.
  46.  
  47.     It is now possible to close all DCC connections and kill all
  48.     EXEC'ec process by sending the client a SIGUSR1.
  49.  
  50.     ON PUBLIC has now got this format:
  51.         $0  sender
  52.         $1  channel sent to
  53.         $2- message
  54.  
  55.     New variable, NOTIFY_LEVEL, and window command NOTIFY_LEVEL,
  56.     which affect the notification of hidden windows.  Same
  57.     arguments as LASTLOG_LEVEL.
  58.  
  59.     Two new level of /IGNORE, CRAP, and CTCP.
  60.  
  61.     New functions, MYCHANNELS() and MYSERVERS() added.
  62.     MYCHANNELS() takes a window refnum (defaults to current
  63.     window), and returns a string with a list of channels on that
  64.     windows server.  MYSERVERS() returns a string of the names of
  65.     the servers you are connected to.
  66.  
  67.     New variable, XTERM_OPTIONS, which are passed to xterm, when
  68.     using WINDOW CREATE.  Note that -geom switches are already
  69.     generated by ircII, so these will be ignored by xterm.
  70.  
  71.     New variables, EIGHT_BIT_CHARACTERS, which, if set, allows
  72.     you to input 8 bit characters (such as the Swedish character
  73.     set).
  74.  
  75.     New SERVER option, -DELETE, allows you to remove servers
  76.     from the internal server list.
  77.  
  78.     New command line option, -v, which prints the version
  79.     and internal version (release date).
  80.  
  81. 2.2.1
  82.     New WINDOW command LOGFILE has been added.  It takes one 
  83.     argument, the file name of the logfile to be used for this
  84.     window.  Nothing is appended to this name, if you use 
  85.     WINDOW LOG.  If you don't set a logfile for the window, and
  86.     use WINDOW LOG, then ircII creates a name for you (old way).
  87.  
  88.     ON SERVER_NOTICE has been changed, and any script which used
  89.     this will most likely not work any more.  In the new format,
  90.     $0 is the server name, and $1- is the notice itself.
  91.  
  92.     New variable, SHOW_WHO_HOPCOUNT, which if set will not filter
  93.     out the hopcount on a who reply.
  94.  
  95. 2.2c
  96.     New CTCP, ECHO, which just returns what you sent.
  97.  
  98. 2.2
  99.     New alias variables `$W', `$V' and `$H' which expand to the
  100.     current working directory, the internal ircII release date,
  101.     in YYYYMMDD format, and the current numeric being processed, 
  102.     respectively.
  103.  
  104.     /ME and /DESCRIBE no longer add a period to the end.
  105.  
  106.     New variable NO_CTCP_FLOOD has been added.  When set, it makes
  107.     your client only send out one CTCP REPLY each second, and will
  108.     ignore anyothers it gets for that second.
  109.  
  110.     New BINDable key function, REFRESH_INPUTLINE, which, amazingly,
  111.     refreshes the input line.
  112.  
  113.     Several /ON NUMERICS's have been changed such that $0 is now the
  114.     server name of the originating.  These include the 31x series
  115.     (/WHOIS replies), which in turn is /ON WHO and /ON WHOIS.
  116.     Numberics 401, have also been changd for this.
  117.  
  118.     MSG -channel is no longer supported.  Multi-channal make
  119.     this switch unreliable.
  120.  
  121.     IRCII now supports CTCP PING.  You can call this with
  122.         /PING nick[,nick[,nick...]]
  123.     And it will show you how many seconds to takes to get a
  124.     message to them and back.  Be warned that too many nick
  125.     will cause the server flood control to be used, making
  126.     the times calculated wrong.
  127.  
  128.     You can now redirect in to a dcc chat connection, with
  129.         REDIRECT =nick command.
  130.  
  131. 2.2pre8
  132.     New command, INPUT has been added.  It takes arguments like:
  133.         /INPUT "prompt" command args
  134.     
  135.     Where it displays "prompt" and then calls command, with args,
  136.     and with the line prompted for as $*.  The use of this is
  137.     strongly encouraged over the use of variable $"..".  Similar
  138.     problems that occur in /wait.
  139.  
  140.     USERHOST and HOST commands have been changed to allow
  141.     asymnronous command execution, depening on the return of
  142.     the userhost reply.  The form is
  143.         /USERHOST <nick> -CMD <commands>
  144.  
  145.     Where $0 - $4 expand to the nick, oper status, away status,
  146.     username and hostname respectively.
  147.  
  148.     If you want the screen to be scrolled like it was in 2.1.5
  149.     and before (A line at the bottom), edit source/window.h and
  150.     define SCROLL_AFTER_DISPLAY.
  151.  
  152.     DCC CHAT has be improved.  No longer will a collision cause
  153.     nasty things to happen - the client will automatically connect
  154.     if a collision is detected.
  155.  
  156.     LASTLOG has been changed so that you can now use it like this:
  157.     /LASTLOG <pattern> <count> to get the last <count> lines that
  158.     match <pattern>.
  159.  
  160.     LIST -TOPIC has been fixed, and its functionality changed,
  161.     so that it do NOT over ride other switches, but works with
  162.     them.
  163.  
  164.     Three new variables STATUS_USER1-3 have been added, to combine
  165.     with the new STATUS_FORMAT variables, %X, %Y and %Z. <poxaV>
  166.  
  167.     New command, PARSEKEY, added.  The argument is one of the key
  168.     functions, and the effect is the same as would be if you
  169.     pressed a key bound to that function.
  170.  
  171.     New command, SENDLINE added.  The arguments parsed to it
  172.     are processed like normal text input, except they are not
  173.     caught by ON INPUT.
  174.  
  175.     ON INPUT changed to catch all inputted text, not just
  176.     text being send to a channel or a nick.  New variable
  177.     INPUT_PROTECTION added to stop people shooting their
  178.     own foot with the new ON INPUT.
  179.  
  180.     One new BIND functions has been implimented -
  181.     ERASE_TO_BEG_OF_LINE (not bound to anything by default),
  182.     erases from the current cursor position to the beginning
  183.     of the input line - <poxaV>
  184.  
  185.     Added new variable HIGHLIGHT_CHAR.  That is /setable to either
  186.     BOLD, INVERSE, or UNDERLINE.  It effects the character that
  187.     ignore + uses.
  188.  
  189.     Made dcc chat messages show the time after them, if away,
  190.     like normal messages.
  191.  
  192.     Made ctcp not reply to global messages, either in the form
  193.     of $*.domain, or #*.domain.
  194.  
  195.     Added a new command line argument.  `-S'.  It does the 
  196.     oppsite of the `-s' option, and also made -s the default.
  197.     Make then run ircserv if they want it, not if they don't
  198.     know.
  199.  
  200.     Rewrote BreakArgs() in parse.c trying to fix a bug with
  201.     referencing NULL pointers on domain/ox.
  202.  
  203.     More of the source files reformatted.   Starting to get some
  204.     distance with this finally.
  205.  
  206.     We now understand that &channel are channels, for the 2.8 servers
  207.     that will be arriving soon.
  208.  
  209.     DCC LIST now shows the start time, and the number of bytes
  210.     sent, and read on a dcc connection.
  211.  
  212.     Added a ctcp reply to dcc.c so that when a dcc collision 
  213.     occurs, we also inform the other client of the event, rather
  214.     than them not knowing about it.  (obsoleted)
  215.  
  216.     Added new functiality to the /TIMER command.  If it is called
  217.     with out arguments, then it list the commands that were
  218.     added with /TIMER, that are pending to be executed.  If it is
  219.     called with the -DELETE flag, and given a refnum (first column
  220.     in the timer list), it will attempt to delete the timer.  You
  221.     can also specific the TIMER command to use a refnum of your
  222.     choice, with the -REFNUM n flag.  It generates an error if
  223.     the refnum already exists, or you specify a negative number.
  224.     It is illegal to remove a timer from itself.
  225.  
  226.     Added new functionality to /window server command.  You can now
  227.     do /window server server.name:port:password:nick, and the nick
  228.     will be set properly for that server.
  229.  
  230.     Two new functions, $ENCODE() and $DECODE().  They work as a
  231.     pair, such that $ENCODE($DECODE(blah)) will return blah, and
  232.     the other way around.  The primary use is tha $ENCODE() always
  233.     returns a value that is suitable for a variable name, so that
  234.     the well used $strip_chan() alias is not needed.  <Daemon>
  235.  
  236.     Added -WIDE flag to /LIST.  Shows the channel names, and their
  237.     sizes in as little space as possible.  <Troy>
  238.  
  239.     HELP now works properly again.  No recusive calls to irc_io, and
  240.     no ping timeouts, but with the same functionality as 2.2pre7.
  241.  
  242.     New variable added, HELP_PROMPT.  If set ON, nothing different
  243.     happens, but if set OFF, then ircII will not prompt for more
  244.     help after showing a file.
  245.  
  246.     All the header files reformatted, and some of the source files.
  247.  
  248.     Fixed bug in window server which caused the client to become
  249.     confused about nicks for each window.
  250.  
  251.     Fixed bug that caused ircII to continue trying to connect to the
  252.     last server in the server list if it failed on every other one,
  253.     and often flooded umode s people.  Nasty Nasty.
  254.  
  255.     Fixed bug in status.c/window.c that caused the window_notify
  256.     to be out of date on occasion.
  257.  
  258.     When changing servers, or when the last window to a server is
  259.     closed, the QUIT is actually sent.
  260.  
  261. 2.2pre8.troy
  262.     A new command has been added - /TIMER. This takes the form:
  263.  
  264.         TIMER seconds command
  265.  
  266.     and causes the given command to be executed after the specified
  267.     number of seconds. Any number of timers can be issued, and 
  268.     they do not need to be issued in order. For example, the following
  269.     alias:
  270.  
  271.         ALIAS JUMBLE TIMER 10 echo one;TIMER 5 echo two; \
  272.                 TIMER 15 echo three
  273.  
  274.     will cause "two", "one" and "three" to be printed at 5 second
  275.     intervals, starting with "two" in 5 seconds. Using /TIMER should
  276.     be the preferred approach over /SLEEP.
  277.  
  278.     ircII can now take advantage of X windows and screen to create
  279.     windows in different xterms or screen windows. The command to
  280.     create such a window is /WINDOW CREATE. Each window created in
  281.     this manner gets its own input line. This feature is
  282.     particularly useful if you use multiple channels. There are
  283.     still some things to be fixed with this. In particular,
  284.     prompted input can give unexpected results ($"..", /Oper and
  285.     server passwords, confirmations), as can the old form of the
  286.     /WAIT command. In short, when using multiple windows,
  287.     expect the unexpected.  To use this feature you will have to
  288.     define WINDOW_CREATE in source/window.c.
  289.  
  290.     A new form of the WAIT command, /WAIT -CMD command,
  291.     (or WAIT -CMD %process command) causes the given command
  292.     to be executed after the wait condition has occured.
  293.     For example, the following alias:
  294.  
  295.         ALIAS BACKWARDS wait -cmd echo hello there;echo hi there
  296.  
  297.     Will actually display "hi there" before "hello there", because
  298.     the "hello there" echo is not executed until a WAIT token is
  299.     received from the server.
  300.  
  301.     This new form of /WAIT is to be used in preference over the
  302.     old form. The old form has innumerable problems, among them being:
  303.  
  304.         If one WAIT is executed while another is pending,
  305.         both will be registered as satisfied when the first
  306.         returns. A warning is now issued when this happens.
  307.  
  308.         If you are in a prompted input sequence (such as oper
  309.         password, confirmation prompts, and $".." input),
  310.         results can be unpredictable.
  311.  
  312.         It is not consistant with the message driven programming
  313.         model which exists in ircII.
  314.  
  315.     With multi window enhancements the problems with WAIT become even
  316.     more prohibitive, unless used in the -CMD form.
  317.  
  318.     If you are echoing output to the screen from within the WAIT -CMD
  319.     form, it is probably a good idea to record the current window
  320.     and use XECHO -WINDOW to ensure that output goes where it should.
  321.  
  322. 2.2lynx.pre8
  323.     Modified /me (edit.c) to automatically append periods,
  324.     feature used by new 'action' script.
  325.  
  326.     Revamped many scripts, the config.h, little changes to
  327.     Makefile and help files.
  328.  
  329.     Globally replaced all put_it("*** .. by new function say()
  330.     and changed put_it_always into yell.
  331.  
  332.  
  333. 2.2pre7.myc6.phone
  334.     Added Megre support of irc 2.8, there is still a long way to
  335.     go here.   Code for the user mode e has been written, but not
  336.     added, as it probably won't be in the server.
  337.  
  338.     Added window refnum to the output of the WINDOW LIST command.
  339.  
  340.     Notify bug on start up fixed.
  341.  
  342.     Two new functions GETPID() and GETPPID() added to allow the 
  343.     process ID, and parent process ID to be accessable with in
  344.     a script.   These have been left out for now.
  345.  
  346.     Changed the KICK command, to allow the sending of kick
  347.     comments.
  348.  
  349.     Bug in QUIT_ON_OPERATOR_KILL fixed, where last time was
  350.     not `seen' for long enough to be read.
  351.  
  352.     Mail checking bug fixed.
  353.  
  354.     Added new variable SHOW_STATUS_ALL.  When set, it shows everthing
  355.     in every (visible) status line.  When not set, it only show
  356.     things that (I think) are relevant to that window, and are
  357.     not the same as the current window.   Things like nickname, 
  358.     usermode, are only shown on one window, if connected to only
  359.     one server.
  360.  
  361.     Made DCC with no arguments the same as DCC LIST.
  362.  
  363.     Added the window notification status to WINDOW command (no args).
  364.  
  365.     Away changed to allow different away messages on different
  366.     servers.  Two flags -ONE and -ALL (-ONE default) for the sending
  367.     of the away message to the servers you are on.
  368.  
  369.     Bug in $RAND() fixed <Daemon>.
  370.  
  371. 2.2pre7.myc6
  372.     HELP_SERVICE and HELP_PATH are now SETtable variables.
  373.  
  374.     Memory leak in add_to_window() is fixed.
  375.  
  376.     WHICH doesn't wedge the client (by corrupting load_depth) any more.
  377.  
  378.     MSG *, QUERY *, CTCP *, REDIRECT *, NAMES *, LIST *.  [Daemon]
  379.  
  380.     $U inserts cut buffer.  [Daemon]
  381.  
  382.     $RAND() is a bit more portable and doesn't use floating point.
  383.  
  384.     Scripts updated to use `:' as noop rather than `#'.
  385.  
  386. 2.2pre7.myc5
  387.     QUOTE USERHOST *really* doesn't core dump any more.  B-)
  388.  
  389.     `voice' script updated for new script parser.
  390.  
  391. 2.2pre7.myc4
  392.     The Makefile now handles making the symlink for config.h.  This
  393.     has the advantage of being slightly easier to use on a machine
  394.     without symbolic links; you just change the `LN' variable in the
  395.     top-level Makefile to `cp'.  It also has the advantage that we
  396.     won't see patch files with two copies of the diffs for config.h
  397.     any more.  B-)
  398.  
  399.     Makefile.proto has been rearranged somewhat, and the dependencies
  400.     have been updated.
  401.  
  402.     DCC GET bug from myc2 fixed.
  403.  
  404. 2.2pre7.myc3
  405.     All the bloody #defines at the beginning of keys.c are now in
  406.     keys.h.proto, and are handled by `count'.
  407.  
  408.     Stupid inverse (and bold) video bug from myc2 fixed.
  409.  
  410. 2.2pre7.myc2
  411.     ^Os are no longer appended to lines before storing them in the
  412.     lastlog.  This avoids adding ^Os to lines in the log file when
  413.     using /LASTLOG.  Bleah.
  414.  
  415.     New commmand :, which is a noop.  Using # as a noop command is
  416.     strongly discouraged, as it is treated differently in scripts.
  417.     (# at the beginning of a line in a script (ignoring spaces) means
  418.     to ignore the whole line.)
  419.  
  420.     Bug in handling quoted braces from 2.2pre7.myc1 fixed.
  421.  
  422.     `DCC GET nickname' gets the first file offered by `nickname'.
  423.  
  424.     KICK comments are now displayed, if present.
  425.  
  426.     Removed silly whitespace limitation in scripts.
  427.  
  428.     JOIN no longer automatically adds a `#' to a channel name if missing.
  429.     [Avalon]
  430.  
  431. 2.2pre7.myc1
  432.     New commands WINDOW BACK, NEXT, PREVIOUS.  [phone]
  433.  
  434.     New commands ON HOOK and HOOK.  [Daemon]
  435.  
  436.     DCC SEND and GET now display speed when transfer is finished.  [Avalon]
  437.  
  438.     (Rest of these by Mycroft:)
  439.  
  440.     Added declaration for `newexp' in whilecmd() which Troy left
  441.     out.
  442.  
  443.     Removed line discipline code for AIX.
  444.  
  445.     Fixed ON_KICK.
  446.  
  447.     Tabs now display in reverse video after limit reached, so you
  448.     can actually see them.
  449.  
  450.     -c works again.
  451.  
  452.     ON WINDOW doesn't recurse (and thus doesn't crash).
  453.  
  454.     TOPIC and ACTION messages go in the right windows.
  455.  
  456.     PAUSE_AFTER_MOTD is now a compile-time option and actually
  457.     works.
  458.  
  459.     QUOTE USERHOST doesn't crash.
  460.  
  461.     QUOTE ISON does something sensible.
  462.  
  463.     USERHOST and ISON with no arguments no longer corrupt the
  464.     whois queue.
  465.  
  466.     \ is no longer converted to \\ by /SAVE and in the history.
  467.  
  468.     /MSG FOO, does the right thing.
  469.  
  470.     /TYPE \^ now types out a caret, which you couldn't do before.
  471.  
  472.     White space around braces is less important.  The main effect
  473.     is that K&R style braces now work.  You should be able to use
  474.     whatever indenting style you prefer.  Note that braces inside
  475.     a command should be quoted now, a la \{ and \}.
  476.  
  477. 2.2pre7
  478.     Meta4 is now sticky. That is, Meta4-C-D-E-F-G invokes the
  479.     meta4 versions of C, D, E, F and G. This effect lasts until
  480.     meta4 is invoked again. Additionally, the Meta4 characters
  481.     ^h, SPACE, h, i, j, k, x, H, I, J, K, L and X have been
  482.     bound in such a way that BIND ^[ META4_CHARACTER now
  483.     gives a vi editing mode.
  484.  
  485.     Bugs in complex '@' expressions fixed.
  486.  
  487.     Thu Jun 11 09:48:47 1992  Charles Hannum  (mycroft@ai.mit.edu):
  488.  
  489.     * Makefile: Change RS/6000 support.
  490.  
  491.     * config.h (DEFAULT_STATUS_CHANNEL): Delete duplicate definition.
  492.  
  493.     * script/action: Remove `on's.
  494.  
  495.     * script/bigcheese: Convert to 2.2pre6 syntax.
  496.     script/finger.who, script/fnet, script/killpath: Likewise.
  497.     script/kpstat, script/log, script/nicks, script/repeat: Likewise.
  498.     script/shell, script/voice: Likewise.
  499.  
  500.     * script/version: Update version number.
  501.     script/netsplit: Rewrite to handle multiple splits.
  502.     script/brc: Fix typo.
  503.  
  504.     * source/alias.c: Change function prototypes to match definitions.
  505.     source/ctcp.c, source/edit.c, source/status.c: Likewise.
  506.     source/term.c, source/translat.c, source/vars.c: Likewise.
  507.     source/window.c: Likewise.
  508.  
  509.     * source/edit.c: Put comment delimiters around text after #endif.
  510.     source/help.c, source/hold.h, source/irc.h, source/ircaux.c: Likewise.
  511.     source/lastlog.h, source/term.h: Likewise.
  512.  
  513.     * source/exec.c: Add support for AIX 3.
  514.     source/help.c, source/irc.h, source/ircserv.c: Likewise.
  515.     source/log.c, source/newio.c, source/scandir.c: Likewise.
  516.     * source/ircaux.c: Rename _RS6000 to _IBMR2.
  517.     source/status.c: Likewise.
  518.     * source/term.c: Remove unnecessary code for AIX 3.
  519.  
  520.     * source/vars.c: Replace NULLs with 0s in integer context.
  521.  
  522.     * source/status.c (convert_sub_format): Make bletch an array to
  523.     prevent being put in readonly storage.
  524.     (status_channel): Use format string even if *private*.
  525.  
  526.     * source/notice.c (parse_server_notice): Don't call
  527.     reconnect_all_channels and reinstate_user_modes if first connect
  528.     (phone bug).
  529.  
  530.     * source/menu.c: Make sure menu cursor doesn't get redrawn if menu
  531.     disappears.
  532.  
  533.     * source/exec.c: Make sure messages get redirected after EXEC output.
  534.  
  535.     * source/edit.c (evalcmd): Fix EVAL when subargs == NULL.
  536.     source/if.c (ifcmd, whilecmd, foreach): Likewise for IF, WHILE,
  537.     and FOREACH.
  538.  
  539.     * source/if.c (whilecmd): Copy exp on every iteration, as parse_inline
  540.     destroys it.
  541.  
  542.     * source/irc.c: Update version number.
  543.  
  544.     * source/dcc.c: Include arpa/inet.h for prototypes.
  545.  
  546.     * script/ping, script/whowas: New scripts.
  547. 2.2pre6
  548.     WARNING. 2.2pre6 will almost certainly require changes
  549.     to your .ircrc and script files due to changes in the
  550.     parsing. The intention at this point is to keep the new
  551.     syntax forever. That is, unless there's something I
  552.     have missed, there will be no further script breaking
  553.     changes.
  554.  
  555.     DISPLAY now defaults to OFF in scripts.
  556.  
  557.     Two new meta keys have been added. Meta3 is bound by
  558.     default to META1-[, and Meta4 is left unbound.
  559.  
  560.     DCC SEND now checks that a file exists before sending
  561.     the request. Memory allocation bugs when using DCC
  562.     file transfers with ~ pathnames fixed.
  563.  
  564.     If you have experienced corrupted output from ircII,
  565.     this should be fixed.
  566.  
  567.     Several display bugs, including a memory leak related
  568.     to using windows have been fixed.
  569.  
  570.     Missed PINGs when in the help pager fixed.
  571.  
  572.     A new command, EVAL, has been added. EVAL causes
  573.     its arguments to be passed through variable substitution
  574.     and executed.
  575.  
  576.     Alias substitution is no longer performed in scripts,
  577.     regardless of the setting of INPUT_ALIASES. To force alias
  578.     substitution, use EVAL.
  579.  
  580.     A command beginning with '@' is taken to be an
  581.     alias expression as would be normally parsed
  582.     from within ${}. The expression is substituted and
  583.     the substituted value discarded.
  584.  
  585.     The script loading path is now accessible as the SET
  586.     variable, LOAD_PATH. Additionally, if you are unsure
  587.     as to which directory a script being loaded is in,
  588.     the /WHICH command will display the full path to a
  589.     script. eg. /which global shouls give something on all
  590.     systems.
  591.  
  592.     Bugs in Menus which caused core dumps have been fixed.
  593.  
  594.     Bug in DCC which caused incoming DCC messages not to be
  595.     directed to window level DCC fixed.
  596.  
  597.     Bug with +s channels and /names fixed.
  598.  
  599.     Connections to servers on UNIX domain sockets are now
  600.     supported.
  601.  
  602.     Aliases can now be recursive up to a maximum level
  603.     as specified in the variable MAX_RECURSIONS.
  604.  
  605.     The inline variable parser now substitutes \n, \r, \0
  606.     and \p too their equivalents in the CTRL-P convention.
  607.  
  608.     Having ! as the first character for the INDEX function
  609.     no longer causes just unescaped characters to be matched.
  610.     It is now a normal character in this context.
  611.  
  612.     The $%FUNCTION syntax is no longer supported. You can
  613.     still use functions - just remove the '%'.
  614.  
  615.     The parser used when INPUT_ALIASES is on has been changed
  616.     again. Text between brackets (...) and {...} is no longer
  617.     subject to alias expansion, unless the opening bracket is
  618.     escaped (ie... \( or \{ ). This affects alii and input when
  619.     INPUT_ALIASES is on.
  620.  
  621.     Additionally, You can return to full alias substitution
  622.     within ${...} by enclosing the substitution text in
  623.     [...]. Thus  if $0 == test, and $bear == black
  624.         ${[$0]} expands to "test"
  625.         ${[$bear]} expands to "black"
  626.         ${bear} also expands to "black"
  627.         ${ bear == [black] }  expands to "1",
  628.         ${ [$0] == [test] ) expands to "1"
  629.         ${ [$0] == [black] ) expands to "0"
  630.         ${ [$0](this) } expands to the return value of $test(this)
  631.  
  632.     There is a new form for the if command. This is:
  633.         if (expr) {then_commands} {else_commands}
  634.     Note that because the expression, the then_commands
  635.     and the else_commands are between brackets, they are
  636.     not expanded in alias expansion. This is taken care of
  637.     in the if statement itself. The expression is treated
  638.     as if it were enclosed in ${...}. Thus all the comparisons,
  639.     groupings, arithmetic and boolean operations that a
  640.     available in ${...} can be used in the expression.
  641.     Also note that you can have more than one command in
  642.     each of the then and else parts of the condition.
  643.  
  644.     The result is that what used to look like this:
  645.  
  646.     on ^send_public * if "$^!^=^>^<C=$^!^=^>^<0" \
  647.         "echo $%format(11 <$N>) $^"1-" \
  648.         "echo $%format(10 <$N):$^"0> $^"1-"
  649.  
  650.     can (and must) now be expressed like this:
  651.  
  652.     on ^send_public * if ( C == [$0] ) \
  653.             { echo $format(11 <$N> $1- } \
  654.             { echo $format(10 <$N):$0> $1- }
  655.  
  656.     Note that this means there is no longer any need for using the
  657.     ^ escaping, and this may disappear in a later version unless
  658.     there are strong objections.
  659.  
  660.     The same thing has happened to while and foreach, which now
  661.     have the syntax:
  662.         WHILE (expr) {commands}
  663.     AND
  664.         FOREACH structure index {commands}
  665.  
  666.     The effect of this on WHILE and FOREACH is that you no longer
  667.     need to double up occurrences of '$'. You can still get this
  668.     effect if you wish by escaping the leading bracket in the
  669.     appropriate expression. Additionally, both while and foreach
  670.     can now be recursive. Thus the following works as expected:
  671.  
  672.         assign a.1.1 one one
  673.         assign a.1.2 one two
  674.         assign a.2.1 two one
  675.         assign a.2.2 two two
  676.         alias fe
  677.         {
  678.             foreach a i
  679.             {
  680.                 foreach a.$i j
  681.                 {
  682.                     echo $i $j $a[$i][$j]
  683.                 }
  684.             }
  685.         }
  686.  
  687.     THE OLD SYNTAX FOR IF, WHILE AND FOREACH IS NO LONGER SUPPORTED.
  688.  
  689.     In scripts, lines beginning with '{' and containing other text
  690.     are joined on to the previous line with one space placed between
  691.     the two lines, thus the above example could have been written as:
  692.  
  693.     on ^send_public * if ( C == [$0] )
  694.             { echo $format(11 <$N> $1- }
  695.             { echo $format(10 <$N):$0> $1- }
  696.  
  697.     Additionally, the {..} syntax for grouping within scripts
  698.     can now be nested. Nested {...} pairs must have the brackets
  699.     placed on their own line, and the brackets are included in the
  700.     resulting text. Thus the following is equivalent to the above:
  701.  
  702.     on ^send_public * if ( C == [$0] )
  703.             {
  704.                  echo $format(11 <$N> $1-
  705.             }
  706.             {
  707.                 echo $format(10 <$N):$0> $1-
  708.             }
  709.  
  710.     Or, for a little more verbosity:
  711.  
  712.     on ^send_public * if ( C == [$0] )
  713.             {
  714.                 echo Current Channel:
  715.                 echo $format(11 <$N> $1-
  716.             }
  717.             {
  718.                 echo Another Channel:
  719.                 echo $format(10 <$N):$0> $1-
  720.             }
  721.  
  722. 2.2pre5
  723.     Bug in "Password" prompt for server passwords fixed.
  724.  
  725.     Bug in WINDOW REFNUM fixed. <phone>
  726.  
  727.     Bug in ON DCC_CHAT which prevented interaction with
  728.     the server fixed. <phone>
  729.  
  730.     Bug which caused +w'd non-opers to see their own WALLOPs
  731.     twice fixed. <phone>
  732.  
  733.     Additional operators have been added to the ${...}
  734.     expresions. They are the equality and inequality
  735.     operators (==, !=, >, >=, <, <=), the unary NOT
  736.     operator (!), and the conjugation operators (&&, ||, ^^).
  737.     These take 0 as false and any other number as true,
  738.     and return 1 as true and 0 as false.
  739.  
  740.     On top of these are the assignment operator (=) and the
  741.     string concatenation operator (##). The assignment operator
  742.     means that the following now makess sense, and causes the value
  743.     of first_name and last_name to be concatenated with a space
  744.     inserted between them, and the value assigned to full_name.
  745.  
  746.         @ full_name = first_name ## [ ] ## last_name
  747.  
  748.     The following is also possible:
  749.  
  750.         @ a = b * (c + d)
  751.  
  752.     A new variable has been added for script developers.
  753.     The DEBUG variable enables three types of debugging
  754.     output dependant on the settings of various bits.
  755.         bit    value    purpose
  756.          0      1    Display all commands executed
  757.          1      2    Display all alias substitutions made
  758.          2      4    Display all function calls and return values
  759.  
  760.     More changes to parsing have occured. Firstly, there
  761.     is no longer any '\' substitution on input. Thus, when
  762.     you type text to a channel, in a /msg or elsewhere, it
  763.     comes out exactly as you type it.
  764.  
  765.     On the other hand, '\' processing does exist anywhere
  766.     that alias expansion occurs. The result is that if you
  767.     have INPUT_ALIASES ON, you won't notice the difference.
  768.     Also, aliases and ons still get the '\' substitution
  769.     performed on them. All \c pairs where c is any character
  770.     are collapsed to just 'c' after all parsing has been done,
  771.     with the exception of ", !, =, < and >, which are
  772.     required by if and while. This shouldn't be the case
  773.     for much longer.
  774.  
  775.     Function and array index expansion now only observes
  776.     unescaped bracket delimiters. Thus $%index(\) abc\)def)
  777.     returns 3.
  778.  
  779.     Finally, the '%' is no longer needed for functions.
  780.     Thus you the above example is the same as
  781.     $index(\) abc\)def)
  782.  
  783.     The net result of all the changes to parsing in this
  784.     version should be to make both command entry and alias
  785.     construction much more intuitive.
  786.  
  787.     A new function, TDIFF, has been implemented.
  788.     TDIFF takes as its argument a time interval in seconds
  789.     and returns it as the english representation of
  790.     that number in the form:
  791.  
  792.         dd days hh hours mm minutes ss seconds
  793.  
  794.     omiting any zero values, unless all values are zero,
  795.     in which case the seconds field is returned.
  796.  
  797.     Bugs in dumb mode fixed.
  798.  
  799.     The parsing of ${} expressions has been changed. When
  800.     mathematical expressions are being used, order of
  801.     operations is respected and brackets are recognised
  802.     and treated correctly. Additionally, functions can
  803.     be referenced (without needing the % qualifier), and
  804.     functions and aliases can be mixed to give versatility.
  805.     This may break some numeric expressions, but will make
  806.     a lot more a whole lot more legible and intuitive. For
  807.     example, the following:
  808.  
  809.         ${3*(INDEX(x abcxdef)+2)}
  810.  
  811.     Yields 3*(3+2) = 15
  812.     or, if you have an alias:
  813.  
  814.         ALIAS TEST echo ${INDEX(x $0)*5}
  815.  
  816.     and then type:
  817.  
  818.         /TEST abcxdef
  819.  
  820.     you will get back 15
  821.  
  822.     Then, if you have a set of functions, A.1, A.2, A.3,
  823.     and the variable IND is set to 2, then ${A[$IND]()}
  824.     will resolve to an invocation of A.2 as a function.
  825.  
  826.     If you have a function, F, and a pair of arrays A
  827.     and B, each with elements numbered 1-10, and F returns
  828.     either A for 1 and B for 2, then the following:
  829.  
  830.         ${F(2)[5]}
  831.  
  832.     returns element 5 from array B.
  833.     Because order of operations is now respected, both
  834.     ${3*2+5} and ${5+2*3} return 11.
  835.  
  836. 2.2pre4
  837.     /WHO * now results in failure if you are not on a channel.
  838.  
  839.     Behaviour of positioning when menus are being used has been
  840.     corrected. There's the possibility that I broke something
  841.     else while doing it though.
  842.  
  843.     The worst of the memory leaks has been fixed. There are
  844.     still some memory leaks apparently present. If you compile
  845.     with ALLOC_DEBUG defined, then when the memory tracking
  846.     table gets full (indicating a leak), IRCII will abort,
  847.     generating a debug.log which lists all allocated blocks
  848.     with their sizes and contents in ASCII. This should
  849.     prove helpful in tracking leaks.
  850.  
  851.     The slosh (\) no longer quotes characters which have no
  852.     special meaning, thus allowing you to enter a '\' in the
  853.     text without doubling it up. Additionally, The \n sequence
  854.     no longer works. Use ';' in aliases instead, and quote the
  855.     CR or NL character to get the same effect interactively
  856.     (ie. ^Q^J or similar).
  857.  
  858.     Fixes to the multitude of bugs in pre3.
  859.  
  860. 2.2pre3
  861.     If the environment variable "MAIL" is set, IRCII now uses
  862.     it to determine which file to check for mail.
  863.  
  864.     The VERBOSE_CTCP variable has been fixed.
  865.  
  866.     A new function, CONNECT(), gives access to TCP sockets
  867.     at the application level. The arguments are the destination
  868.     host and port number, and the return value is the
  869.     file descriptor (fd) associated with that socket.
  870.     A null file descriptor indicates that the host could
  871.     not be resolved, and a negative descriptor indicates
  872.     that an error occured in connecting.
  873.  
  874.     To test this facility, create a connection to the
  875.     echo service on some machine with:
  876.  
  877.         /alias socktest echo $%connect(host 7)
  878.  
  879.     Which will echo the file descriptor.
  880.     Then send messages to it with:
  881.  
  882.         /dcc raw fd host message
  883.  
  884.     These will be echoed back at you by the remote host.
  885.     Incoming messages can be intercepted with ON DCC_RAW,
  886.     which has the following formats:
  887.  
  888.         fd host D data
  889.         fd host C
  890.         fd host N port
  891.         fd host E port
  892.  
  893.     The D message indicated incoming data.
  894.     The C message indicates that the socket has been closed.
  895.     The N message indicates that a socket listening on the
  896.     specified port has accepted a connection. fd in this case
  897.     is the file descriptor for the new connection.
  898.     The E message is generated when a CONNECT() results in a
  899.     successful connection.
  900.  
  901.     The LISTEN() function creates a listening socket. It takes
  902.     a single argument - the port number on which to listen. If
  903.     this is zero, then a port number is assigned. The return
  904.     value is the port number on which the socket is listening
  905.     for connections. A port number below 1025 results in an
  906.     error.
  907.  
  908.     Conventions to be used for the socket access:
  909.  
  910.         Scripts using sockets should never use the
  911.         serial number 0 in their hooks. As their first
  912.         act before using the DCC_RAW hooks, they should
  913.         set:
  914.  
  915.         ON ^DCC RAW * #
  916.  
  917.         To ensure that all raw DCC sockets produce no
  918.         output.
  919.  
  920.         A new set of hooks should be created for each
  921.         active socket at a chosen serial number. One
  922.         must always exist to detect the close message,
  923.         and as its last act must remove all the hooks
  924.         for that file descriptor.
  925.     
  926.     
  927.     You can now "send" a message to a command. For example,
  928.         /msg /echo this is a test
  929.     is the same as
  930.         /echo this is a test.
  931.     The primary use of this is to allow a /QUERY of a command.
  932.     Thus if you /query /echo, everything you type to the
  933.     current window will simply be echoed back, and if you
  934.     /query /exec, you can use IRCII as a shell. Note that
  935.     when querying a command, you may need to use XECHO -WINDOW
  936.     to ensure output goes to the right place.
  937.  
  938.     CTCP UTC has been added. This is primarily for robots
  939.     to send date and time information to users and have it
  940.     displayed in local time. The format of the UTC
  941.     CTCP is:
  942.         UTC number
  943.     where number is the ASCII representation of the 32 bit
  944.     integer representing the time as is used on UNIX machines.
  945.     When IRCII receives this CTCP, it replaces the text of
  946.     the local time expressed in the local language back into
  947.     the original message. Thus if you send the following:
  948.  
  949.         /NOTICE nick The time is ^AUTC 702777074^A
  950.  
  951.     The user might see:
  952.  
  953.         -yournick- The time is Thu Apr  9 09:51:14 1992
  954.  
  955.     (if their timezone is Australian Eastern Standard Time).
  956.  
  957.     Menus have been added. The menus are totally user
  958.     configurable and a test menu has been provided in
  959.     the top level directory of the IRCII source distribution.
  960.     To use this menu, copy it to your home directory,
  961.     run IRC, and to the following:
  962.  
  963.         /MLOAD test
  964.         /SET menu Main Menu
  965.  
  966.     Control-R is bound to ENTER_MENU, and while in the menu
  967.     you can use vi-like keys or EMACS-like keys to move
  968.     through the options, and either '.' or SPACE to select
  969.     an option. The format of the menu file is as follows
  970.  
  971.     A line beginning with a '#' represents a comment.
  972.     Blank lines are ignored.
  973.     A line beginning with the word "MENU" starts a new menu
  974.     and gives it a name.
  975.     A line beginning with the word "OPTION" adds a new option
  976.     to the menu, gives it a name and describes what it does.
  977.  
  978.     For more information, see the demonstration menu shipped
  979.     with the sources.
  980.  
  981.     Bug which cleared the input line when calling WAIT from
  982.     ON TIMER fixed.
  983.  
  984.     Bug which left channel names from a previous connection
  985.     in the channel list even if they could not be rejoined
  986.     fixed.
  987.  
  988.     User modes are now restored after a disconnect/reconnect.
  989.  
  990.     Bug which caused the scrollback buffer to duplicate messages
  991.     when HOLD_MODE is on fixed.
  992.  
  993.     USERHOST is now used in place of WHOIS to retrieve IRC-Op
  994.     information on WALLOPing users and in the case of 2.6.2
  995.     servers, user@host information for IGNORE. This means
  996.     that there are now three commands going through the WHOIS
  997.     queue - WHOIS, ISON and USERHOST. It is not a good idea
  998.     to /quote these, as you will be likely to corrupt the
  999.     WHOIS queue. USERHOST can now be issued with /HOST and
  1000.     /USERHOST
  1001.  
  1002.     It is now possible to have more than one ON hook executed for
  1003.     each event triggering a hook. This has been done by adding a
  1004.     new serial number concept to the ON command. Each ON hook has
  1005.     a serial number attached. Serial numbers can be any number
  1006.     from -maxint to maxint, with the default being 0.
  1007.  
  1008.     When an event triggers a hook, IRCII now goes through the ON
  1009.     hooks added for that event, and for each serial number used
  1010.     by ON hooks in that hook type, finds the best match out of those
  1011.     ON hooks which have that serial number and executes that ON
  1012.     hook. The hooks are executed in order of serial number. Thus
  1013.     if you set up the following set of MSG hooks.
  1014.  
  1015.         ON #^MSG -666 * echo Message coming:
  1016.         ON ^MSG * echo Message from $0: $1-
  1017.         ON #^MSG 666 * echo I got one, I got one!
  1018.         ON #^MSG 666 WiZ echo WiZ hath spoken
  1019.  
  1020.     will cause the following to appear when you receive a message:
  1021.  
  1022.         Message coming:
  1023.         Message from nick: text
  1024.         I got one, I got one!
  1025.  
  1026.     And the following if you receive a message from WiZ:
  1027.  
  1028.         Message coming:
  1029.         Message from WiZ: text
  1030.         WiZ hath spoken
  1031.  
  1032.     The default serial number is 0, and the serial numbers are always
  1033.     executed in order, starting with the lowest, and ending with the
  1034.     highest.
  1035.  
  1036.     Although the '^' modifier can be used with any serial number,
  1037.     it will only suppress the decault action if used with serial
  1038.     number 0. Thus if the only message hook you have is:
  1039.  
  1040.         ON #^MSG -666 * echo Incoming:
  1041.  
  1042.     You will see the following when you receive a message:
  1043.  
  1044.         Incoming:
  1045.         *nick* text
  1046.  
  1047.     It is advisable to place any ON hooks which do not suppress the
  1048.     default action in a serial number other than 0. In particular,
  1049.     TIMER hooks, which are generally not intended to exclude other
  1050.     TIMER hooks, should be placed at different serial numbers wherever
  1051.     possible, and never on 0 (since 0 is the most likely place to
  1052.     get a clash if anybody does use it).
  1053.     
  1054.     The # modifier (bind to current server) for ON commands has been
  1055.     changed to '&'.
  1056.  
  1057.     Fixed display bug with reverse and bold modes which caused
  1058.     these modes to be turned off if a line wrapped. Also fixed
  1059.     NOTIFY and LINKS problems.
  1060.  
  1061.     The bug in user mode processing when a MODE command makes no
  1062.     actual changes to the user mode has been fixed.
  1063.  
  1064.     A new status line variable, %B, gives the number of lines
  1065.     in the hold buffer for the current window. Its format
  1066.     is controlled by the STATUS_HOLD_LINES variable. %B is only
  1067.     updates once for every ten lines.
  1068.  
  1069.     New status line variable, %# added. This returns the current
  1070.     user mode. Its format is controlled by the STATUS_UMODE
  1071.     variable.
  1072.  
  1073.     The behaviour of FLUSH when HOLD_MODE is on has changed.
  1074.     it now clears the hold buffer for the current window before
  1075.     flushing further output from the server. The result is that
  1076.     with HOLD_MODE on it is now impossible to get into a
  1077.     situation where you are being flooded by server output
  1078.     with no hope of reprieve.
  1079.  
  1080. 2.2pre2
  1081.     ^G bug fixed. A couple of small things cleaned up.
  1082.  
  1083. 2.2pre1
  1084.     Note that there have been several new variables added in
  1085.     this version, so old config.h files won't work. Also the
  1086.     IRCIIhelp service is being regionalised. You should set
  1087.     HELP_SERVICE to the nearest IRCII help service in config.h
  1088.  
  1089.     Three new BIND functions have been implimented -
  1090.     SCROLL_BACKWARD (bound by default to ESC-p), SCROLL_FORWARD
  1091.     (bound by default to ESC-n), and SCROLL_END (bound by
  1092.     default to ESC-e). These allow you to scroll through the
  1093.     output stored in LASTLOG without having to use the
  1094.     LASTLOG command. SCROLL_BACKWARD causes IRCII to scroll
  1095.     half a window of LASTLOG data on to the screen, pushing
  1096.     whatever is in the window towards the bottom. ESC-p
  1097.     reverses this, thus looking at newer parts of the LASTLOG
  1098.     history. ESC-e exits this scrollback buffer facility
  1099.     at any time. This facility is probably best used with
  1100.     HOLD_MODE set to ON, and requires SCROLL to be set to ON.
  1101.     If you use this facility with HOLD_MODE off, then when you
  1102.     leave the scrollback buffer, either by SCROLL_FORWARDing
  1103.     to the end of it or SCROLL_ENDing, all text that has been
  1104.     accumulated will be printed. If you have HOLD_MODE on,
  1105.     the window will be held until you manually unhold it.
  1106.  
  1107.     Provision has been made for memory allocation debugging
  1108.     for developers. Add -DALLOC_DEBUG to the CFLAGS, and
  1109.     IRCII will abort (generating a core dump) should memory
  1110.     be freed which was never allocated. Additionally, a
  1111.     dump will be made showing the locations of all allocated
  1112.     memory with the two preceding long integers in memory.
  1113.     Additionally, SEGV will be trapped and will generate
  1114.     a similar log, with the addition that if you are using
  1115.     an IBM RS6000 it will dump a heap walk. People on other
  1116.     platforms will need to either add heap walk code for
  1117.     those systems or manually walk the heap using the
  1118.     debugging information. The dump is stored in debug.log
  1119.  
  1120.     A new XECHO flag, -WINDOW, has been implimented. Thus:
  1121.         XECHO -WINDOW 1
  1122.     always sends output to window 1, and
  1123.         XECHO -WINDOW JUNK
  1124.     always sends output to the window named "junk". If the
  1125.     window does not exist, the -WINDOW flag has no effect,
  1126.     except to cancel any earlier -WINDOW flag.
  1127.  
  1128.     Two new modifiers have been added to /ON. If the first
  1129.     character of the first argument (the hook name or numeric
  1130.     number) is '#' or '@', the ON only affects things relating
  1131.     to the current server. Additionally, if it is '@', and there
  1132.     is no match for things in the list of ONs applying to the
  1133.     current server, it will not resort to the default list.
  1134.     [Changed in pre3]
  1135.  
  1136.     WHO -LUSERS (returns only non-operators) and
  1137.     WHO -NICK <nickname> (returns only people matching the
  1138.     nickname argument) have been implimented.
  1139.  
  1140.     A new variable, DCC_BLOCK_SIZE controls the size of
  1141.     blocks sent when sending files using DCC SEND.
  1142.     The default is normally 512. Increasing this number
  1143.     increases network efficiency. Decreasing this number
  1144.     slows down the transfer, but also decreases the chances
  1145.     of the transfer being aborted over bad links.
  1146.  
  1147.     Use of real estate when SCROLL is ON has been improved.
  1148.     There is no longer a blank line between the text and
  1149.     the status bar. This takes a little getting used to,
  1150.     as now the screen scrolls before a line is printed
  1151.     rather than after.
  1152.  
  1153.     You can now include text modification characters
  1154.     (^B, ^V, ^_ and ^O) in STATUS_FORMAT. If you change
  1155.     the format at the start of STATUS_FORMAT, you will
  1156.     have to do it again after any %C or %U, as these
  1157.     both reset it to reverse video.
  1158.  
  1159.     You can no longer abbreviate QUIT, SIGNOFF, BYE or EXIT
  1160.     in NOVICE mode.
  1161.  
  1162.     All restrictions on IGNORE by user@host removed.
  1163.  
  1164.     Internals given a decent reworking. There could be bugs here.
  1165.     You should now never see ircd's colons marking the last
  1166.     argument.
  1167.  
  1168.     Added two new wildcards to the pattern matching system.
  1169.     '%' matches any sequence of characters except a space.
  1170.     '?' matches any single character.
  1171.  
  1172.     International character set support added. Translation
  1173.     tables are supplied for various terminal types. To activate
  1174.     the appropriate character set, /SET TRANSLATION charset_name
  1175.     eg. For an IBM PC set up for US English (Code page 437),
  1176.         /SET TRANSLATION CP437
  1177.     The translation tables assume that text transmitted on the
  1178.     servers adheres to ISO 8859/1. If your terminal understands
  1179.     ISO8859/1, set TRANSLATION to LATIN_1. The default is ASCII,
  1180.     due to the fact that nothing can be safelt assumed about any
  1181.     terminal.
  1182.  
  1183.     Bug in /set history 1 fixed
  1184.  
  1185.     Bug with redirecting to yourself fixed. It is now illegal
  1186.     to redirect to yourself.
  1187.  
  1188.     $P (Chanop status variable) fixed, and a new status line
  1189.     substitution, %@, which subsitutes to STATUS_CHANOP if
  1190.     you are chanop on the channel shown on the status bar.
  1191.  
  1192.     $~ now substitutes to the last word on a line.
  1193.  
  1194.     New functions:
  1195.  
  1196.     ISCHANNEL(word)        Returns 1 if word is a valid
  1197.                 channel name.
  1198.     ISCHANOP(nick channel)    Returns 1 if nick is a chanop
  1199.                 on the given channel.
  1200.     WORD(number wordlist)    Returns the specified word from
  1201.                 wordlist. The first word is
  1202.                 numbered 0.
  1203.     WINNUM()        Returns the current window number.
  1204.                 this is always the window which is
  1205.                 indicated by STATUS_WINDOW.
  1206.     WINNAM()        Returns the current window name.
  1207.                 this is always the window which is
  1208.                 indicated by STATUS_WINDOW.
  1209.                 If the window has no name, it returns
  1210.                 nothing.
  1211.  
  1212.     INVERSE_VIDEO variable and beyond fixed.
  1213.  
  1214.     A new character attribute, bold, has been added. This
  1215.     is enabled and disabled with ^_. Disabling bold has
  1216.     the side effect of disabling inverse and underline
  1217.     without recording it internally. You should allow for
  1218.     this when using bold text. Bold text can be enabled
  1219.     and disabled with the BOLD_VIDEO variable.
  1220.  
  1221.     The status line problems with attribute characters
  1222.     have been fixed. You can now include attribute characters
  1223.     in the status line and they will take effect. One
  1224.     application of this is to change the status bar from
  1225.     inverse text to bold or underlined by including ^_ or
  1226.     ^V at the start of STATUS_FORMAT.
  1227.  
  1228.     You can now refer to the elements of structures
  1229.     (normally Structure.Element) as Structure[Element].
  1230.     When you do this, Element is evaluated as an expression
  1231.     before it is appended to Structure. Thus if A has the
  1232.     value "TEST", and there is a variable "B.TEST" with the
  1233.     value "Message":
  1234.         echo $B[$A]
  1235.     yields:
  1236.         Message
  1237.     These can be repeated, as in:
  1238.         $MATRIX[0][0]
  1239.     which becomes "$MATRIX.0.0". The result is a pseudo-array
  1240.     effect.
  1241.  
  1242.     New command, FOREACH has been added. The format is
  1243.         FOREACH structure variable command
  1244.     This causes command to be executed once for each
  1245.     element in the named structure, with variable
  1246.     substituted to the name of the element. Thus
  1247.     if you have assigned:
  1248.         /ASSIGN A.1 ONE
  1249.         /ASSIGN A.2 TWO
  1250.         /ASSIGN A.3 THREE
  1251.         /ASSIGN A.4 FOUR
  1252.         /ASSIGN A.5 FIVE
  1253.     and have an alias:
  1254.         /ALIAS SHOWA FOREACH a i ECHO $$i
  1255.     and type
  1256.         /SHOWA
  1257.     The output will be:
  1258.         1
  1259.         2
  1260.         3
  1261.         4
  1262.         5
  1263.     Alternatively, you can use:
  1264.         /ALIAS SHOWA FOREACH a i ECHO $$a[$$i]
  1265.     to get:
  1266.         ONE
  1267.         TWO
  1268.         THREE
  1269.         FOUR
  1270.         FIVE
  1271.     Note that if you use numbers, 11 comes before 2.
  1272.     The easiest way around this is to start numbering
  1273.     elements at a higher number, such as 100.
  1274.     Note that FOREACH, like WHILE, does variable
  1275.     substitution once when the FOREACH command is
  1276.     evaluated, and once for each iteration. This
  1277.     means that in general you will need to double
  1278.     up any occurences of '$'.
  1279. 2.1.5b-2.1.5g
  1280.  
  1281.     Functionality of WHO -HOST and WHO -SERVER returned.
  1282.  
  1283.     New WHO flags, -HERE and -AWAY added.
  1284.  
  1285.     New functions:
  1286.  
  1287.     MATCH(pattern word-list) Returns an index into the word
  1288.                 list of the first word that matches
  1289.                 the pattern, starting at 1 and
  1290.                 returning 0 for no match.
  1291.     RMATCH(word pattern-list) Returns an index into the pattern
  1292.                 list of the pattern that word best
  1293.                 matches.
  1294.     STRIP(charlist line)    Strips all occurrences of characters
  1295.                 contained in charlist from the line.
  1296.  
  1297.     You no longer need to supply the leading # to JOIN and PART.
  1298.     If the leading # is omitted, and you are on a 2.7 server,
  1299.     it will be inserted. Notable exceptions to this rule are
  1300.     channel '#', which would have no name if the # were omitted,
  1301.     and channels beginning with '##'.
  1302.  
  1303.     CTCP Action format changed so as not to interfere with channel
  1304.     text. ON ACTION and ON SEND_ACTION added. You can now suppress
  1305.     ACTION text with these, or reformat it.
  1306.  
  1307.     Many bugs fixed.
  1308.  
  1309. 2.1.5-2.1.5a
  1310.  
  1311.     New functions:
  1312.  
  1313.     USERHOST()        Returns the user@host of the sender
  1314.                 of the message currently being
  1315.                 processed.
  1316.  
  1317.     WHO -HOST and -SERVER is no more supported. (This is reenabled
  1318.     in a later version).
  1319.  
  1320.     The contents of an alias can now be surrounded by '{' and '}'
  1321.     in and broken over multiple lines. See script/finger for an example.
  1322.  
  1323.     Indentation with leading tabs and spaces is now permitted in script
  1324.         files. See /HELP LOAD.
  1325.  
  1326.     HOLD_MODE no longer holds when you are being active in that window.
  1327.  
  1328.     If you have SHOW_AWAY_ONCE on, away messages are remembered and
  1329.     only displayed when they change.
  1330.  
  1331.     Notification of the receipt of a CTCP request no longer occurs
  1332.     unless VERBOSE_CTCP is on.
  1333.  
  1334.     Prompts from EXECed processes now appear in the input window if
  1335.     $T appears in INPUT_PROMPT.
  1336.  
  1337.     Scripts and help files can now be stored in compressed format.
  1338.     They will be uncompressed as they are used.
  1339.  
  1340.     All the scripts have been updated and many helpfiles written and
  1341.     rewritten.  Many bugs have been fixed, support of newer server
  1342.     features added. Server 2.7 compatibility improved.
  1343.  
  1344.     There have been major changes in the command parser. Commands
  1345.     are not expected to have a leading / unless entered interactively,
  1346.     if you experience incompatibilities, you will have to add 'say' and 
  1347.     'send' wherever you have made aliases that send to the channel or query.
  1348.     See also /help ircII programming for this. Also the ';' has a new
  1349.     meaning as command seperator within ALIAS, BIND and ON. You might have
  1350.     to \escape it.
  1351.  
  1352.     CTCP ACTION has been implemented which permits you to send
  1353.     descriptions of actions/'feelings' to other people on channels
  1354.     and even through queries. You can use it with /me and the action
  1355.     script. See also: /help load action.
  1356.  
  1357. * 2.1.5 (by lynX) Text is historically from new to old, that is - read it from bottom to top!
  1358.  
  1359.     Updated help files: NEWS LOAD/* WHOIS IRCII/IRCII IRCII/PROGRAMMING
  1360.         ALIAS/ALIAS BIND/PARSE_COMMAND BIND/EXAMPLES ON/ON CTCP/* ME DESCRIBE
  1361.         ON/SIGNOFF SEND SAY NOTIFY SET/COMMAND_MODE ALIAS/SPECIAL RESTART
  1362.         SET/LASTLOG_LEVEL
  1363.  
  1364.     Threw out /who -s and -h, they were superflous and bad.
  1365.     Cleaned up the vars.h and hook.h by cleaning the protos... FINALLY!
  1366.     Wrote count.c and the proto headerfiles, adapted the Makefile.proto
  1367.     Added underlining mechanism with put_it-code ^V.
  1368.     Updated man page a bit.
  1369.     Added optional code to limit the notify list length (MAX_NOTIFY).
  1370.     Removed lots of do_hook-numeric if's by splitting the numeric's switch.
  1371.     Rewritten /notify list.
  1372.     Simplified notify.c and whois.c to no more support channel notify.
  1373.         (If ISON doesn't, why should we then?).
  1374.     Added Troy's alias functions MATCH and USERHOST, but no HELPs.
  1375.     Added support for {  } constructs in scripts and indentation.
  1376.  
  1377.     Removed the oper-flags from the IRC commands, if you issue oper commands while
  1378.     you're not one, you get the beautiful ircd error messages.
  1379.  
  1380.     Seem to have fixed the problem in the status_mail sprintf...
  1381.     Changed the handling of 2.7 UserHost in PRIVMSG etc.
  1382.     The $, is now also set when you get an invitation.
  1383.     Added oneself's nickname as command alias for /me. "/lynx smiles."
  1384.     Improved HOLD_MODE: it no more holds a window if the user is being active on it.
  1385.     Added some numeric codes in numbers.c for 2.7 compatibility.
  1386.     Added support for ~ in IRCPATH, but only referring to the user's own home-dir.
  1387.     Suspended a piece of new code in mail.c which seems to cause weird problems.
  1388.     Introduced lastlog_level 'ACTIONS' to log in and outgoing CTCP ACTION lines.
  1389.     Made 317 (whois-idle) a tiny bit smarter (seconds or minutes).
  1390.     Added #ifdef SVR4 code.
  1391.     Added SHOW_AWAY_ONCE and VERBOSE_CTCP vars.
  1392.     Replaced QUIT_ON_KILL variable by a #define.
  1393.     Applied Allanon's patches to ctcp.c and dcc.c, removal of DCC/SENDCRC + GETCRC.
  1394.     Added support for numeric 364 (new LINREPLY). Old LINREPLY code not removed.
  1395.  
  1396.     New handling of process prompts. In the past they were put into the window->prompt
  1397.     and then inserted into the INPUT_PROMPT var mask, which looks *ugly*, also the
  1398.     input would not get echoed. Now it does this: If a prompt is detected you are
  1399.     elegantly prompted, as if you were in the program itself, when you enter your
  1400.     datum prompt and input are displayed in the window the way it would look outside
  1401.     ircII. This is a great step towards using ircII as an interface to all kinds of
  1402.     things, ircII + /bin/sh as a replacement for tcsh.. Ha ha I'm kidding. Well, for
  1403.     a MUD client it's fine. ircII can now be used as MUD client.
  1404.     BTW, I had to do profound changes in the handling of prompts throughout the source.
  1405.  
  1406.     Fixed ancient bug concerning process-query: you can now type 'just CR' into an exec.
  1407.  
  1408.     Fixed strange bug with /save prompt. Still don't know what was actually wrong,
  1409.     but it behaves correctly now.  :-I
  1410.  
  1411.     Away messages are only displayed ONCE.
  1412.  
  1413.     Added #ifdef into new_free() to hunt for free's that should not take place.
  1414.     If you have spare time hunt some of those..  ;)
  1415.  
  1416.     Added the commands '<text> and :<text> which only work in COMMAND_MODE and
  1417.     act like /send and /me respectively. This is a MUD standard.
  1418.  
  1419.     Added /restart, /xtra and /host which calls USERHOST. The last two have no
  1420.     /help files.
  1421.  
  1422.     Introduced Allanon's implementation of ZCAT help file display.
  1423.     Also scripts (files for /load) can be stored in compressed format if one likes.
  1424.  
  1425.     Patched /save to work with totally dumb terminals, with -d it saves without prompting.
  1426.  
  1427.     Added special sequence '$D' to the alias parser. Thanks to The_Edge for the idea.
  1428.     Added binding ESC-G to the 'commander' script that uses it.
  1429.  
  1430.     Applied Veggen's patch to alias.c concerning uninitialized variables.
  1431.  
  1432.     Removed /set VERBOSE_QUERY since the same can be achieved with /^query...
  1433.     (If you want it use /alias quer ^query)
  1434.  
  1435.     Added DCC SENDCRC and GETCRC by Allanon. These functions transmit and receive
  1436.     files with checksum. It has to be tested and decided if a checksum is needed
  1437.     or futile by TCP definition. The commands are temporary and should replace
  1438.     the current SEND/GET or be removed away again. Since this decision affects
  1439.     other client coders, too, it should be discussed via USENET or interactively.
  1440.  
  1441.     Added ';' handling: In ALIASes, ONs and BINDs it is legal to use ; as command
  1442.     seperator instead of \\n while in LOAD and interactive mode ';' is considered a
  1443.     normal character (to be able to type ;-) ). With a little magic I managed to make
  1444.     it possible to escape the ; with \; in aliases if you want it as character.  *PHEW*
  1445.  
  1446.     Repaired /whois 317 (idle time output).
  1447.     Added /whois <server> <nick>[,<nick2>..] format to /whois command.
  1448.  
  1449.     Added commands /me and /describe to produce ACTION messages.
  1450.  
  1451.     Added CTCP ACTION handling.
  1452.  
  1453.     Disabled GLOBAL_IRCRC, replaced by automatic /load of 'global' which is
  1454.     supposed to be in the IRCPATH. This permits easier debugging and developing
  1455.     of scripts by redirecting everything into an other directory.
  1456.  
  1457.     If a person has an .ircrc the person is assumed to not be a novice, the /HELP NEWUSER
  1458.     notice is not output.
  1459.  
  1460.     Added variable QUIT_ON_KILL to select if one wants to /quit when
  1461.     one is killed. /ON KILL has not been implemented for obvious
  1462.     reasons of possible misuse..  :-(
  1463.  
  1464.     Added #ifdef AUTO_RECONNECT to make ircII not auto-reconnecting.
  1465.  
  1466.     Added CTCP TIME by Veggen.
  1467.  
  1468.     Added 'signoff reason' to signoff message. Modified some messages concerning
  1469.     CTCP and NOTIFY for beauty or better elequence...
  1470.  
  1471.     Added /send command which sends something to the current query or channel
  1472.     as if it were typed. Acts as replacement to bare text, since that is now
  1473.     interpreted as commands
  1474.  
  1475.     Added /say command which does the same as '/ <text>'
  1476.     and /# (or # in script mode) command which is the same as /comment.
  1477.  
  1478.     Introduced script (command) mode and COMMAND_MODE variable.
  1479.  
  1480.     Removed some code that would never get used, as my optimizer told me.
  1481.  
  1482.     Bug fixes concerning buffers, /if command with HP/UX, ...
  1483.     by Allanon and Veggen.
  1484.  
  1485. * 2.1.4c
  1486.     Some bug fixes, including the CTCP DCC bug and substitution
  1487.     of '\' in alias expansion.
  1488.  
  1489.     Bug in SAVE with "-d" mode fixed.
  1490.  
  1491. * 2.1.4b
  1492.     Support for server version 2.7
  1493.  
  1494. * 2.1.4a
  1495.     Bug fixes.
  1496.  
  1497. * 2.1.4
  1498.     $N now substitutes correctly to the nick on the current server.
  1499.  
  1500.     Bug with changing servers when on multiple channels fixed.
  1501.  
  1502.     ISON based NOTIFY has been implemented. In addition, the
  1503.     code has been modified so that NOTIFY will cause much lower
  1504.     network loads.
  1505.  
  1506.     /TOPIC can now change the topic of a # channel on a 2.6.2b
  1507.     or newer server. The new format for /TOPIC is:
  1508.     /TOPIC [<channel>] [<topic>]
  1509.  
  1510.     Aliases and ASSIGNed variables can now include a dot
  1511.     ('.') in their names. When listing aliases and assigned
  1512.     variables, anthing after a dot in the variable name
  1513.     is suppressed, unless typed explicitly. If two variables
  1514.     have the same name after this, only the first occurence
  1515.     is printed. This allows a structure-like effect.
  1516.  
  1517.     /ASSIGN A.A This is a
  1518.     *** Assign A.A added
  1519.     /ASSIGN A.B this is B
  1520.     *** Assign A.B added
  1521.     /ASSIGN A.C This is c
  1522.     *** Assign A.C added
  1523.     /ASSIGN A
  1524.     *** Assigns:
  1525.     ***    A    <Structure>
  1526.     /ASSIGN A.
  1527.     *** Assigns:
  1528.     ***    A.A    This is a
  1529.     ***    A.B    this is B
  1530.     ***    A.C    This is c
  1531.     /ALIAS A.A alias a
  1532.     *** Alias A.A added
  1533.     /ALIAS A.B alias b
  1534.     *** Alias A.B added
  1535.     /ALIAS A.C alias c
  1536.     *** Alias A.C added
  1537.     /ALIAS A
  1538.     *** Aliases:
  1539.     ***    A    <Structure>
  1540.     /ALIAS A.
  1541.     *** Aliases:
  1542.     ***    A.A    alias a
  1543.     ***    A.B    alias b
  1544.     ***    A.C    alias c
  1545.  
  1546.     Note that structures are effectively in a different naming
  1547.     space to non structures. Thus, you can have a structure called
  1548.     'A' and a normal variable, also called 'A'.
  1549.  
  1550.     Server notices are now displayed with the SNOTE level.
  1551.     Four additional lastlog levels, USERLOG1-USERLOG4, are
  1552.     reserved for users. These can be used by displaying text
  1553.     with the XECHO command.
  1554.  
  1555.     Four new alias substitutions: $O substitutes to the value
  1556.     of STATUS_OPER if you are an operator, $P to '@' if you are
  1557.     a channel operator on the current channel, $M to the modes
  1558.     on the current channel, and $A to the current away message.
  1559. * 2.1.3c
  1560.     A new DCC command, rename, changes the name of a file sent
  1561.     to you by somebody else. DCC file transfer should also accept
  1562.     the ~ now.
  1563.  
  1564.     Some bug fixes.
  1565. * 2.1.3b
  1566.     A new log level, OPNOTE, has been added. This level applies
  1567.     to notices sent to operators, such as KILL notices.
  1568.  
  1569.     A new status line variable, %F, lists the hidden windows in
  1570.     which there has been activity since they were made hidden.
  1571.     An associated IRCII variable, STATUS_NOTIFY, sets the format
  1572.     for this to be displayed.
  1573.  
  1574.     New ONs: CHANNEL_NICK and CHANNEL_SIGNOFF are executed once
  1575.     for each channel from which the user changes nick or signs off.
  1576.     If all the CHANNEL_NICK and CHANNEL_SIGNOFF hooks which are
  1577.     matched suppress output, then the default output and the NICKNAME
  1578.     and SIGNOFF hooks will be suppressed.
  1579.  
  1580.     Various bug fixes.
  1581. * 2.1.3a
  1582.     Various bug fixes.
  1583. * 2.1.3
  1584.     Added support for the Tektronix XD88
  1585.  
  1586.     Added DCC talk. To use this, /DCC TALK user@host. DCC talk
  1587.     will only send an announcement once, rather than an infinite
  1588.     number of times.
  1589.  
  1590.     Fixed bug with functions which have no arguments. Added RINDEX
  1591.     function.
  1592.  
  1593. * 2.1.2.2
  1594.     New help files RULES and IMPORTANT included. You should
  1595.     read these before installing help and decide on a site
  1596.     by site basis if you wish to install them. If not, remove
  1597.     them from the help directory.
  1598.  
  1599.     Hopefully fixed the WHOIS queue once and for all.
  1600.  
  1601.     Fixed some bugs outstanding from 2.1 (HELP paging with
  1602.     HOLD_MODE ON, Core dumps after a WHOIS or WHOWAS if the
  1603.     WHOIS queue was empty, core dumps when the status line
  1604.     is an empty string)
  1605.  
  1606. * 2.1.2
  1607.     Added DCC file transfers (GET and SEND), and DCC CLOSE
  1608.  
  1609.     Added new window command - NOTIFY. This toggles the
  1610.     notification status of the current window. A window with
  1611.     notification on causes a message to be printed in the
  1612.     current window if output to that window occurs while
  1613.     it is hidden.
  1614.     
  1615.     Changed group message ([$#]*.domain) handling so that such
  1616.     messages are treated more like WALLs than MSGs. (Meaning
  1617.     that it beeps if you have WALLs set in BEEP_ON_MSG, not
  1618.     if you have MSGs set).
  1619.  
  1620.     The type of the MAIL variable has been changed from BOOLEAN
  1621.     back to INTEGER. If set to 2, it will now display some of the
  1622.     headers from incoming mail. Setting it to 1 is the same as
  1623.     setting it to ON used to be.
  1624.  
  1625.     /ON SERVER_NOTICE processes messages sent from the server
  1626.     as NOTICEs, including MOTDs and many server status messages.
  1627.     The easiest way to see what is trapped by this is to do a
  1628.     /ON ^SERVER_NOTICE * /echo [SNOTICE] $* and see what happens.
  1629.  
  1630.     /WHO -FILE performs a /WHO, displaying only those nnicks
  1631.     contained in the named file. This allows a larger list to
  1632.     be kept of people you know on IRC but not well enough to
  1633.     put them in the NOTIFY list.
  1634.  
  1635.     If a channel name exceeds the channel name width in the output
  1636.     of /NAMES or /WHO, the last character that would be displayed
  1637.     is shown as a '>'.
  1638.  
  1639.     Added NOVICE variable. Causes a new user message to be printed
  1640.     after .ircrc has been loaded if it is still set to ON, and
  1641.     refuses to allow any ON commands to be executed.
  1642.  
  1643.     Added /ON RAW_IRC to deal with any unknown commands coming from
  1644.     the server. This is primarily of use to people working on server
  1645.     code, or people using servers with new commands which IRCII does
  1646.     not yet recognise.
  1647.  
  1648.     Direct Client Connections implemented. /DCC CHAT opens a direct
  1649.     connection to another client. The user at the other end can either
  1650.     accept the chat with a /DCC chat or ignore it. Messages are sent
  1651.     across DCC CHAT connections with DMSG or DQUERY. A new status
  1652.     specifier, %D (STATUS_DQUERY) is supported, which substitutes
  1653.     the DQUERY value. Two more /ONs, DCC_CHAT and SEND_DCC_CHAT, deal
  1654.     with DMSG messages.
  1655.  
  1656. * 2.1.1
  1657.     Version 2.1.1 supports user defined functions. A user
  1658.     defined functions is an alias that ASSIGNs a value to
  1659.     FUNCTION_RETURN. Another alias can substitute the return
  1660.     value with $%FUNCTION(ARGUMENTS). See /HELP ALIAS FUNCTIONS
  1661.  
  1662.     Pattern matching has been improved. IRCII now has an idea
  1663.     of the "best" match. This allows #* to be treated differently
  1664.     to * in /ON NAMES, for example.
  1665.  
  1666.     IF and WHILE now only use unescaped operators. Thus if it
  1667.     is possible for a substitution in an if or while to produce
  1668.     an operator, such as a channel name containing !, it can
  1669.     be entered as $^!CHANNEL, escaping the ! and making IF
  1670.     and WHILE work as expected.
  1671.  
  1672.     Support has been added for privileged ports. If IRCII is
  1673.     installed setuid->root it will attempt to bind the local
  1674.     socket to a privileged port, allowing some servers to
  1675.     verify connecting users on this basis. The PP_OBJS and
  1676.     PP_DEFS macros in Makefile must be uncommented.
  1677.